package cn.topevery.garden.entity.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.topevery.garden.entity.po.GreFile;
import cn.topevery.garden.entity.serializer.GeometrySerializer;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.locationtech.jts.geom.Geometry;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;

/**
 * 行道树 视图
 *
 * @author code-generate
 * @date 2022-01-05
 */
@Data
@ApiModel(value = "GreTree 视图", description = "行道树 视图")
public class GreTreeVO extends ExcelImportVO implements Serializable {
    /**
     * 自增id
     */
    private Integer id;

    /**
     * UUID
     */
    @ApiModelProperty(value = "UUID")
    private Character treeId;

    /**
     * 编号
     */
    @ApiModelProperty(value = "编号")
    @Excel(name = "编号(必填)", orderNum = "0")
    private String code;

    /**
     * 中文名
     */
    @ApiModelProperty(value = "中文名")
    @Excel(name = "中文名(必填)", orderNum = "0")
    private String name;

    /**
     * 拉丁名
     */
    @ApiModelProperty(value = "拉丁名")
    @Excel(name = "拉丁名", orderNum = "0")
    private String nameLatin;

    /**
     * 绿地Id
     */
    @ApiModelProperty(value = "绿地Id")
    private Integer landId;

    /**
     * 树高（M）
     */
    @ApiModelProperty(value = "树高（M）")
    @Excel(name = "树高(m)", orderNum = "0")
    private Double treeHeight;

    /**
     * 树宽（M） 范围
     */
    @ApiModelProperty(value = "树宽（M）")
    @Excel(name = "树宽(m)", orderNum = "0")
    private String treeWidth;

    /**
     * 科名
     */
    @ApiModelProperty(value = "科名")
    @Excel(name = "科名", orderNum = "0")
    private String treeKind;

    /**
     * 属性
     */
    @ApiModelProperty(value = "属名")
    @Excel(name = "属名", orderNum = "0")
    private String treeAttr;

    /**
     * 类别ID
     */
    @ApiModelProperty(value = "类别ID")
    private String type;

    /**
     * 类别
     */
    @ApiModelProperty(value = "类别")
    private String typeName;

    /**
     * 所属地名
     */
    @ApiModelProperty(value = "具体地址")
    @Excel(name = "具体地址", orderNum = "0")
    private String address;

    /**
     * 所属路段
     */
    @ApiModelProperty(value = "所属路段")
    @Excel(name = "所属路段", orderNum = "0")
    private String aloneLoad;

    /**
     * 普查图片地址
     */
    @ApiModelProperty(value = "普查图片地址")
    private String fileUrl;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @Excel(name = "备注", orderNum = "0")
    private String desc;

    /**
     * 普查日期
     */
    @ApiModelProperty(value = "普查日期")
    @Excel(name = "普查日期", orderNum = "0")
    private LocalDate date;

    /**
     * 坐标X
     */
    @ApiModelProperty(value = "坐标X")
    @Excel(name = "经度", orderNum = "0")
    private Double lng;

    /**
     * 坐标Y
     */
    @ApiModelProperty(value = "坐标Y")
    @Excel(name = "纬度", orderNum = "0")
    private Double lat;

    /**
     * 胸径(m)
     */
    @ApiModelProperty(value = "胸径(m)")
    @Excel(name = "胸径(m)", orderNum = "0")
    private String growth;

    /**
     * 审核状态
     */
    @ApiModelProperty(value = "审核状态")
    private Boolean state;

    /**
     * 生长状态
     */
    @ApiModelProperty(value = "生长状态")
    @Excel(name = "生长状态", orderNum = "0")
    private String growthState;

    /**
     * 树木品种
     */
    @ApiModelProperty(value = "树木品种")
    private String treeName;

    /**
     * 平均冠幅
     */
    @ApiModelProperty(value = "平均冠幅")
    private Double avgCrown;

    /**
     * 树池大小
     */
    @ApiModelProperty(value = "树池大小")
    private String spec;

    /**
     * 树龄
     */
    @ApiModelProperty(value = "树龄")
    private Double treeOld;

    /**
     * 栽种单位
     */
    @ApiModelProperty(value = "栽种单位")
    private String plantUnits;

    /**
     * 管理单位
     */
    @ApiModelProperty(value = "管理单位")
    private String manage;

    /**
     * 管理单位Id
     */
    @ApiModelProperty(value = "管理单位Id")
    private String manageId;

    /**
     * 图层名称
     */
    @ApiModelProperty(value = "图层名称")
    private String objName;

    @ApiModelProperty(value = "附件")
    private List<GreFile> fileList;

    @ApiModelProperty(value = "范围")
    @JSONField(serializeUsing = GeometrySerializer.class, deserializeUsing = GeometrySerializer.class)
    private Geometry mapRanges;

    /**
     * 计算空间数据
     */
    @ApiModelProperty(value = "计算空间数据")
    private String geoWkt;

    @ApiModelProperty(value = "树木类别 1 行道树，2林地, 3散树, 4散树面")
    private Integer treeTypeId;

    private String totalNumber;

}
